package  
{
	import flash.text.TextFieldAutoSize;	

	import authoring.authObject;	

	import flash.text.TextFormatAlign;	
	import flash.text.GridFitType;	
	import flash.text.AntiAliasType;	
	import flash.text.TextFormat;	
	import flash.text.TextField;	
	import flash.text.Font;	
	import flash.display.Sprite;

	/**
	 * @author Andrew
	 * 
	 * 			Выводы:
	 * 	1. Эмбед чистого фонта:
	 * 					[Embed(	source="D:/Distr/adobe/flash_fonts/FFFHARMO.TTF", 
								fontName="Fffharmo",
								mimeType="application/x-font", 
								unicodeRange = "U+0041-U+005A,U+0061-U+007A,U+0033,U+0030-U+0039 ")]
						private var fffharmo : Class;
			или :
			 			[Embed(	systemFont="Accent", 
								fontName="Accent",
								mimeType="application/x-font", 
								unicodeRange = "U+0041-U+005A,U+0061-U+007A,U+0033")]
						private var accent : Class;
			
					    Font.registerFont( fffharmo ); - но можмо и не делать.почему-то не влияет.
	 * 	2. Эмбед из swf, где он там в текстфилде на сцене:
	 * 					[Embed(source="D:/_work/_workspaces/fdt/Test2/out/lib_font.swf", 
            					fontName='Accent_25pt_st')] // Такой синтастсис только когда в пропертиз.антиалайз текстфилда стоит Bitmap text. 25 здесь - строго как там  
						private var accentPlainBitmap : Class;
		3. Ембед из swf, ка символ библиотеки - не выщло //TODO. Синтаксис - ниже.
		4. Эмбед из swc: (там в TextField'е)
		 		публикуем во Flash CS4 как swc
		 		включаем swc в сорспас
		 		в коде теперь стучимся тупо по имени: format.font = "Accent_25pt_st";
		 4а. можно ли єтот swc - получить кимпилятором compc ?
	 * 			
	 * 
	 */
	 
	[SWF(width="700", height="900", backgroundColor="#FFFFFF", frameRate="30")] 
	 
	public class TestFontEmbedding extends Sprite 
	{
		//------------ Accent -----  из swf как символ библиотеки
		[Embed(source="D:/_work/_workspaces/fdt/Test2/out/lib_font2.swf" , 
				symbol="AccentPlain")]
		private var accentPlain : Class;

		[Embed(source="D:/_work/_workspaces/fdt/Test2/out/lib_font2.swf" , 
				symbol="AccentBold")]
		private var accentBold : Class;
		
		[Embed(source="D:/_work/_workspaces/fdt/Test2/out/lib_font2.swf" , 
				symbol="AccentItalic")]
		private var accentItalic : Class;
		
		[Embed(source="D:/_work/_workspaces/fdt/Test2/out/lib_font2.swf" , 
				symbol="AccentBoldItalic")]
		private var accentBoldItalic : Class;
		///---------- Accent from swf textfield

//		[Embed(source="D:/_work/_workspaces/fdt/Test2/out/lib_font.swf", 
//            fontName='Accent_25pt_st'
//        )] 
//		private var accentPlainBitmap : Class;

		//------------------------------------------

		[Embed(	systemFont="Accent", 
				fontName="Accent",
				mimeType="application/x-font", 
				unicodeRange = "U+0041-U+005A,U+0061-U+007A,U+0033")]
		private var accent : Class;

		[Embed(	source="D:/Distr/adobe/flash_fonts/FFFHARMO.TTF", 
				fontName="Fffharmo",
				mimeType="application/x-font", 
				unicodeRange = "U+0041-U+005A,U+0061-U+007A,U+0033,U+0030-U+0039 ")]
		private var fffharmo : Class;

		private var currX : Number = 0;
		private var currY : Number = 0;

		public function TestFontEmbedding() {
			Font.registerFont( accent );			Font.registerFont( fffharmo );
						Font.registerFont( accentPlain );			Font.registerFont( accentBold );			Font.registerFont( accentItalic );			Font.registerFont( accentBoldItalic );
			
			var tfh : TFHolder;
			
//			var textFormat : TextFormat = new TextFormat( ) ;
//			textFormat.font = "_serif"; 
//			textFormat.align = TextFormatAlign.LEFT;
			
			tfh = makeTFH( );
			tfh.format.size = 8;
			tfh.format.font = "_sans";
			tfh.text = "Системный _sans." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "_sans";
			tfh.text = "Системный _sans." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
							
							
							
								
			tfh = makeTFH( );
			tfh.format.size = 8;
			tfh.format.font = "_serif";
			tfh.text = "Системный (дефолтовый)." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "_serif";
			tfh.text = "Системный (дефолтовый)." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
			
			
			
							
			tfh = makeTFH( );
			tfh.format.size = 8;
			tfh.format.font = "_typewriter";
			tfh.text = "Системный дефолтовый." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "_typewriter";
			tfh.text = "Системный дефолтовый." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;				
			
			
			
			
			
			tfh = makeTFH( );
			tfh.format.size = 8;
			tfh.format.font = "Accent";
			tfh.text = "Системный." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;											
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "Accent";
			tfh.text = "Системный." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
			
			
			
							
			tfh = makeTFH( );
			tfh.format.size = 8;
			tfh.format.font = "Accent";
			tfh.tf.embedFonts = true;
			tfh.text = "Встроенный." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;											
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "Accent";
			tfh.tf.embedFonts = true;
			tfh.text = "Встроенный." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
							
							
							
			//
			tfh = makeTFH( );
			tfh.format.size = 8;
			tfh.format.font = "Fffharmo";
			tfh.tf.embedFonts = true;
			tfh.text = "Встроенный." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;											
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "Fffharmo";
			tfh.tf.embedFonts = true;
			tfh.text = "Встроенный." 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;	
			
			
			//
			
			
			
			tfh = makeTFH( );
			tfh.format.size = 8;
			tfh.format.font = "AccentPlain";
			tfh.tf.embedFonts = true;
			tfh.text = "Embedded" 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;											
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "AccentBold";
			tfh.tf.embedFonts = true;
			tfh.text = "Embedded" 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;			
			//
			
			
			
			
			tfh = makeTFH( );
			tfh.format.size = 25;
			tfh.format.font = "Accent_25pt_st";
			tfh.tf.embedFonts = true;
			tfh.text = "Embed from swf.tf" 
							+ "\nsize:" + tfh.format.size
							+ "\nfont:" + tfh.format.font
							;
			
			
			
			
										
 
		}

		private function makeTFH() : TFHolder {
			var tfh : TFHolder = new TFHolder( );
			addChild( tfh );
			tfh.x = currX;			tfh.y = currY;
			currX = (currX == 0) ? tfh.width + 10 : 0;
			if (currX == 0) currY += 110;
			return tfh;
		}
	}
}

import flash.display.Sprite;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.TextFormat;

class TFHolder extends Sprite
{

	public var tf : TextField;
	public var _format : TextFormat = new TextFormat();

	private var holder : Sprite;
	private const HALF_PI : Number = 180 / Math.PI;
	private var base : Sprite = new Sprite( );

	
	public function TFHolder(  ) {
		addChild( base );
		tf = new TextField( );
		tf.width = 320;
		tf.height = 100;
		tf.border = true;
		tf.selectable = false;
		tf.defaultTextFormat = format;
		base.addChild( tf );
		
		holder = new Sprite( );
		holder.graphics.beginFill( 0xB1FF2F );
		holder.graphics.drawRoundRect( 0, 0, 10, 10, 3, 3 );
		base.addChild( holder );
		holder.x = tf.width + 1;
		holder.addEventListener( MouseEvent.MOUSE_DOWN, onDown );
		addEventListener( Event.ADDED_TO_STAGE , onAdded);				holder.addEventListener( MouseEvent.DOUBLE_CLICK, onDoudleClick );
	}
	
	private function onAdded(event : Event) : void {
		removeEventListener( Event.ADDED_TO_STAGE, onAdded);
		stage.addEventListener( MouseEvent.MOUSE_UP, onUp );
	}

	private function onDoudleClick(event : MouseEvent) : void {
		base.rotation = 0;
	}

	private function onUp(event : MouseEvent) : void {
		if (stage) stage.removeEventListener( MouseEvent.MOUSE_MOVE, onMove );
	}

	private function onMove(event : MouseEvent) : void {
		base.rotation = Math.atan2( mouseY, mouseX ) * HALF_PI;
	}

	private function onDown(event : MouseEvent) : void {
		if (stage) stage.addEventListener( MouseEvent.MOUSE_MOVE, onMove );
	}
	
	public function get format() : TextFormat {
		return _format;
	}
	
	public function set format(format : TextFormat) : void {
		tf.defaultTextFormat = _format;
	}
	public function get text(): String{
		return tf.text;
	}
	public function set text ( text: String ): void{
		tf.defaultTextFormat = format;
		tf.text = text;
	}
	
}
